Neither of these features are useful/available in this mode since only a
single domain is supported.
Do not attempt to initialise xen bus when supervisor_mode_kernel is
enabled.
Do not BUG_ON() failure to setup grant tables, future versions
of supervisor_mode_kernel may return -ENOSYS here.
Signed-off-by: Ian Campbell <ian.campbell@xensource.com>
setup.frame_list = frames;
rc = HYPERVISOR_grant_table_op(GNTTABOP_setup_table, &setup, 1);
- BUG_ON(rc || setup.status);
+ if (rc < 0)
+ return rc;
+
+ BUG_ON(setup.status);
#ifndef __ia64__
if (shared == NULL) {
if (xen_init() < 0)
return -ENODEV;
- BUG_ON(gnttab_resume());
+ if (gnttab_resume() < 0)
+ return -ENODEV;
for (i = NR_RESERVED_ENTRIES; i < NR_GRANT_ENTRIES; i++)
gnttab_list[i] = i + 1;
device_register(&xenbus_frontend.dev);
device_register(&xenbus_backend.dev);
+ /*
+ * The supervisor_mode_kernel feature only allows a single
+ * domain so there is no need to initialise event channels
+ * etc.
+ */
+ if (xen_feature(XENFEAT_supervisor_mode_kernel))
+ return -ENODEV;
+
/*
* Domain0 doesn't have a store_evtchn or store_mfn yet.
*/